package com.greensam.pixelengine.facade;

import com.greensam.pixelengine.pojo.base.DeleteRequest;
import com.greensam.pixelengine.pojo.base.PaginationResponse;
import com.greensam.pixelengine.pojo.vo.spaceuser.request.SpaceUserCreateRequest;
import com.greensam.pixelengine.pojo.vo.spaceuser.request.SpaceUserEditRequest;
import com.greensam.pixelengine.pojo.vo.spaceuser.request.SpaceUserPageRequest;
import com.greensam.pixelengine.pojo.vo.spaceuser.response.SpaceUserVo;

import java.util.List;

/**
 * 空间门面服务
 *
 * @author Ma Chengrui
 * @since 2025/8/2 14:23
 */
public interface SpaceUserFacadeService {


    /**
     * 创建空间用户
     *
     * @param request 请求参数
     * @param userId  用户id
     * @author Ma Chengrui
     * @since 2025/9/22
     */
    Long createSpaceUser(SpaceUserCreateRequest request, Long userId);

    /**
     * 删除空间用户
     *
     * @param request 删除请求参数
     * @param userId  用户id
     * @author Ma Chengrui
     * @since 2025/9/22
     */
    Boolean deleteSpaceUser(DeleteRequest request, Long userId);

    /**
     * 编辑空间用户
     *
     * @param request 编辑请求参数
     * @param userId  用户id
     * @author Ma Chengrui
     * @since 2025/9/22
     */
    Boolean editSpaceUser(SpaceUserEditRequest request, Long userId);

    /**
     * 获取空间用户
     *
     * @param id 空间用户id
     * @author Ma Chengrui
     * @since 2025/9/22
     */
    SpaceUserVo getSpaceUser(Long id);

    /**
     * 分页查询空间用户
     *
     * @param request 请求参数
     * @author Ma Chengrui
     * @since 2025/9/22
     */
    PaginationResponse<SpaceUserVo> pageSpaceUser(SpaceUserPageRequest request);

    /**
     * 查询用户加入的团队空间列表
     *
     * @param userId 用户id
     * @author Ma Chengrui
     * @since 2025/9/30
     */
    List<SpaceUserVo> listMyTeamSpace(Long userId);
}
